# -*— coding: utf-8 -*-
#
# @Time : 2023/09/17 20:58
# @Author : LeeLU
# @File : log_conf.py
# @IDE : PyCharm
# @Email : luxuan888@vip.qq.com
# @Wechat : qianyongbuwan
import logging
import os
import colorlog
from config.conf import ConfigManager
log_colors_config = {
    'DEBUG': 'white',
    'INFO': 'green',
    'WARNING': 'yellow',
    'ERROR': 'red',
    'CRITICAL': 'bold_red',
}
logger = logging.getLogger('logger_name')
#  检测当前日期的文件夹是否存在
if not os.path.exists(ConfigManager.TODAY_FILE_PATH):
    os.mkdir(ConfigManager.TODAY_FILE_PATH)
    logging.info('今日尚未测试，创建今天日期的日志文件夹')
# if not os.path.exists(ConfigManager.CSV_FILE_NAME_PATH):
#     os.mkdir(ConfigManager.CSV_FILE_NAME_PATH)
#     logging.info('本次的测试yaml路径文件不存在，创建{}文件'.format(ConfigManager.CSV_FILE_NAME_PATH))
# 输出到控制台
console_handler = logging.StreamHandler()
# 输出到文件
file_handler = logging.FileHandler(
    filename='.\\log\\{}\\test_log_SIMPLE-{}.log'.format(ConfigManager.CURRENT_DATE, ConfigManager.CURRENT_DATE_TIME),
    mode='a',
    encoding='utf8')
# 日志级别，logger 和 handler以最高级别为准，不同handler之间可以不一样，不相互影响
logger.setLevel(logging.DEBUG)
console_handler.setLevel(logging.DEBUG)
file_handler.setLevel(logging.DEBUG)
# 日志输出格式
file_formatter = logging.Formatter(
    fmt='[%(asctime)s.%(msecs)03d] %(filename)s -> %(funcName)s line:%(lineno)d [%(levelname)s] : %(message)s',
    datefmt='%Y-%m-%d  %H:%M:%S'
)
console_formatter = colorlog.ColoredFormatter(
    fmt='%(log_color)s[%(asctime)s.%(msecs)03d] %(filename)s -> %(funcName)s line:%(lineno)d [%(levelname)s] : %(message)s',
    datefmt='%Y-%m-%d  %H:%M:%S',
    log_colors=log_colors_config
)
console_handler.setFormatter(console_formatter)
file_handler.setFormatter(file_formatter)
# 重复日志问题：
# 1、防止多次addHandler；
# 2、loggername 保证每次添加的时候不一样；
# 3、显示完log之后调用removeHandler
if not logger.handlers:
    logger.addHandler(console_handler)
    logger.addHandler(file_handler)

console_handler.close()
file_handler.close()

